const db = require("../models");

/**
 * UserService
 * 操作User表的Service类，由Controller或其他Service调用
 */
class UserService {
  /**
   * @description 获取所有用户
   * @returns {array}
   */
  async getAllUsers() {
    const users = await db.User.findAll({
      attributes: {
        exclude: ["avatar"],
      },
    });
    return users;
  }

  async findUser(id) {
    id = Number(id);
    const user = await db.User.findOne({
      where: {
        id,
      },
    });
    return user;
  }

  /**
   * @description 创建一个用户
   * @param {object} user 要创建的用户
   * @returns {object} 返回已经创建过的用户
   */
  async create(user) {
    return await db.User.create(user);
  }

  /**
   * @description 根据用户id和传入的更改更新用户
   * @param {number} id
   * @param {object} user
   * @returns {number} 更新的个数
   */
  async update(id, user) {
    return await db.User.update(user, {
      where: { id },
    });
  }

  /**
   * @description 根据传入的用户id删除相应的用户
   * @param {number} id
   * @returns {number} 删除的个数
   */
  async delete(id) {
    return await db.User.destroy({
      where: {
        id,
      },
    });
  }
}

//导出实例
module.exports = new UserService();
